package com.xrd.serialhelper;


import java.text.DecimalFormat;


public class ByteUtils2 {


    public static void main(String[] args) {
        byte a = 0x00;
        byte b = 0x1A;
        System.out.println(ByteToIntTo10(a, b));
    }

    private static DecimalFormat df10 = new DecimalFormat("0.0");

    private static DecimalFormat df100 = new DecimalFormat("0.00");

    private static DecimalFormat df1000 = new DecimalFormat("0.000");


    //1字节转int
    public static String ByteToIntTo10(Byte inByte) {
        double v = (double) ByteUtil.ByteToInt(inByte) / 10;
        return df10.format(v);
    }

    //1字节转int
    public static String ByteToIntTo100(Byte inByte) {
        double v = (double) ByteUtil.ByteToInt(inByte) / 100;
        return df100.format(v);
    }


    public static String ByteToIntTo10000(Byte inByte1, Byte inByte2) {
        return (double) ByteUtil.HexToInt(ByteUtil.Byte2Hex(inByte1) + ByteUtil.Byte2Hex(inByte2)) / 10000 + "";
    }



    /**
     * switch控制
     */
//    public static boolean ByteToBoolean(int pos) {
//        String s = converTo(NanHuaApp.appData[pos * 2], NanHuaApp.appData[pos * 2 + 1]);
//        int i = ByteUtil.HexToInt(s);
//        return i == 1;
//    }

    /**
     * 10倍转换
     *
     * @param pos
     * @return
     */
//    public static String conver10x(int pos) {
//        return ByteToIntTo10(NanHuaApp.appData[pos * 2], NanHuaApp.appData[pos * 2 + 1]);
//    }

    /**
     * 100倍转换
     *
     * @param pos
     * @return
     */

//    public static String conver100x(int pos) {
//        return ByteToIntTo100(NanHuaApp.appData[pos * 2], NanHuaApp.appData[pos * 2 + 1]);
//    }
//
//    /**
//     * X倍转换
//     *
//     * @param pos
//     * @return
//     */
//
//    public static String converTox(int pos, int x) {
//        return converTox(NanHuaApp.appData[pos * 2], NanHuaApp.appData[pos * 2 + 1], x);
//    }

    /**
     * 直接转换
     *
     * @param
     * @return
     */

//    public static String converTo(int pos) {
//        byte[] bytes = new byte[2];
//        System.arraycopy(NanHuaApp.appData, pos * 2, bytes, 0, 2);
//        return Integer.parseInt(ByteUtil.bytes2HexStr(bytes), 16) + "";
//    }
    public static String ByteToStringTo10(Byte inByte1, Byte inByte2) {
        return "" + (double) ByteUtil.HexToInt(ByteUtil.Byte2Hex(inByte1) + ByteUtil.Byte2Hex(inByte2)) / 10;
    }

    public static int ByteToInt(Byte inByte1, Byte inByte2) {
        return ByteUtil.HexToInt(ByteUtil.Byte2Hex(inByte1) + ByteUtil.Byte2Hex(inByte2));
    }


    public static int ByteToInt(Byte inByte1, Byte inByte2, Byte inByte3, Byte inByte4) {
        return ByteUtil.HexToInt(ByteUtil.Byte2Hex(inByte1) + ByteUtil.Byte2Hex(inByte2) + ByteUtil.Byte2Hex(inByte3) + ByteUtil.Byte2Hex(inByte4));
    }


//    private static String ByteToString(Byte inByte1, Byte inByte2) {
//        return ByteUtil.Byte2Hex(inByte1) + ByteUtil.Byte2Hex(inByte2);
//    }

    //2字节转int
    private static String ByteToIntTo10(Byte inByte1, Byte inByte2) {
        String s = ByteUtil.Byte2Hex(inByte1) + ByteUtil.Byte2Hex(inByte2);
        double anInt = (double) ByteUtil.HexToInt(s) / 10;
        return df10.format(anInt);
    }

    //1字节转int
    public static String ByteToIntTo100(Byte inByte1, Byte inByte2) {
        String s = ByteUtil.Byte2Hex(inByte1) + ByteUtil.Byte2Hex(inByte2);
        double anInt = (double) ByteUtil.HexToInt(s) / 100;
        return df100.format(anInt);
    }

    private static String converTox(Byte inByte1, Byte inByte2, int x) {
        String s = ByteUtil.Byte2Hex(inByte1) + ByteUtil.Byte2Hex(inByte2);
        double anInt = (double) ByteUtil.HexToInt(s) / x;
        return df1000.format(anInt);
    }

//    public static String ByteToascii(int start, int end) {
//        byte[] bytes = new byte[(end - start) * 2];
//        System.arraycopy(NanHuaApp.appData, start * 2, bytes, 0, (end - start) * 2);
//        return new String(bytes, StandardCharsets.US_ASCII);
//    }
//
//    public static String ByteToascii(int i) {
//        byte[] bytes = {NanHuaApp.appData[i * 2]};
//        return new String(bytes, StandardCharsets.US_ASCII);
//    }


    public static short[] TwoAsciiToShort(int number, String ascii) {

        char[] chars = ascii.toCharArray();
        byte[] bytes = new byte[chars.length];
        for (int i = 0; i < chars.length; i++) {
            bytes[i] = (byte) chars[i];
        }
        String hexStr = ByteUtil.bytes2HexStr(bytes);
        if (hexStr.length() % 4 != 0) {
            hexStr += "00";
        }
        short[] shorts = new short[number];
        for (int i = 0; i < hexStr.length() / 4; i++) {
            shorts[i] = (short) Integer.parseInt(hexStr.substring(i * 4, i * 4 + 4), 16);
        }
        return shorts;
    }


    public static short[] OneAsciiToshort(int number, String data) {

        short[] values = new short[number];

        char[] chars = data.toCharArray();

        for (int i = 0; i < (Math.min(values.length, chars.length)); i++) {

            int v = chars[i];

            if (v >= 0 && v <= 0xffff) {
                values[i] = (short) v;
            } else {
                throw new RuntimeException();
            }
        }
        return values;
    }

    public static String shortToAscii(short[] values) {
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < values.length; i++) {
            int value = values[i];
            char c = (char) value;
            stringBuilder.append(c);
        }
        return stringBuilder.toString();
    }

    public static String shortTo2Ascii(short[] values) {
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < values.length; i++) {
            int value = values[i];
            stringBuilder.append(Integer.toHexString(value));
        }
        return ByteUtil.convertHexToAsCall(stringBuilder.toString());
    }
}
